package com.airbnb.lottie.value;

/**
 * Data class for use with {@link LottieValueCallback}.
 * You should *not* hold a reference to the frame info parameter passed to your callback. It will be reused.
 */
public class LottieFrameInfo<T> {
    private float startFrame;

    private float endFrame;

    private T startValue;

    private T endValue;

    private float linearKeyframeProgress;

    private float interpolatedKeyframeProgress;

    private float overallProgress;

    public LottieFrameInfo<T> set(float startFrame, float endFrame, T startValue, T endValue,
        float linearKeyframeProgress, float interpolatedKeyframeProgress, float overallProgress) {
        this.startFrame = startFrame;
        this.endFrame = endFrame;
        this.startValue = startValue;
        this.endValue = endValue;
        this.linearKeyframeProgress = linearKeyframeProgress;
        this.interpolatedKeyframeProgress = interpolatedKeyframeProgress;
        this.overallProgress = overallProgress;
        return this;
    }

    public float getStartFrame() {
        return startFrame;
    }

    public float getEndFrame() {
        return endFrame;
    }

    public T getStartValue() {
        return startValue;
    }

    public T getEndValue() {
        return endValue;
    }

    public float getLinearKeyframeProgress() {
        return linearKeyframeProgress;
    }

    public float getInterpolatedKeyframeProgress() {
        return interpolatedKeyframeProgress;
    }

    public float getOverallProgress() {
        return overallProgress;
    }
}
